package com.uade.empresasdistribuidas.entities;

import java.util.List;

import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;


@Entity
@Table(name = "EnviosLocales")
@PrimaryKeyJoinColumn(name="nroEnvio", referencedColumnName="nroEnvio")
public class EnvioLocalDTO extends EnvioDTO {
	
	@ManyToOne() 
	@JoinColumn(name="codigoRecorrido")
	private RecorridoDTO recorrido;
	
	
	@ManyToOne() 
	@JoinColumn(name="CodigoVehiculo")
	private VehiculoDTO vehiculo;


	public RecorridoDTO getRecorrido() {
		return recorrido;
	}


	public void setRecorrido(RecorridoDTO recorrido) {
		this.recorrido = recorrido;
	}


	public VehiculoDTO getVehiculo() {
		return vehiculo;
	}


	public void setVehiculo(VehiculoDTO vehiculo) {
		this.vehiculo = vehiculo;
	}


	public Float getPesoPedidos() {
		Float peso= 0f;
		List<PedidoDTO> pedidos = getPedidos();
		if (pedidos != null && !pedidos.isEmpty()) {
			for(PedidoDTO pedido : pedidos){
				peso=peso+pedido.obtenerPesoPedido();
			}
		}
		return peso;
	}
	
	public Float getMaximoPesoEnvio(){
		return vehiculo.getMaximoPeso();
	}
	
	public boolean hayEspacio(Float peso){
		return peso <= (getMaximoPesoEnvio()-getPesoPedidos());
	}
	
	@Override
	public Float getCostoEnvio() {
		return recorrido.getCosto();
	}


	/**
	 * Verifica si se tiene el 70% del peso del vehiculo
	 */
	public boolean puedeSalir() {
		
		return vehiculo.estasCasiLleno(this.getPesoPedidos());
	}


	public boolean estaEnSucursalVehiculo() {
		
		return vehiculo.estasEnSucursal(recorrido.getSucursalOrigen());
	}



	

}
